1. Field of the Invention
This invention relates to data storage techniques and, more particularly, to storage techniques for storage associated with virtual machines.
2. Description of the Related Art
As the performance of server platforms has continued to improve, software technologies have evolved to help users more effectively harness that improved performance. Virtual machines are one such technology. A virtual machine enables a user to run multiple operating systems concurrently on a single physical server, thereby providing more flexible utilization of the underlying hardware.
As used herein, a virtual machine comprises any combination of software, one or more data structures in memory, and/or one or more files stored on one or more storage devices. The virtual machine may mimic or otherwise represent the software and hardware used during execution of a given application(s) or system software. Thus, a virtual machine may include a virtual CPU, virtual I/O devices, etc. The virtual machine in which an application is executing may encompass the entire system state associated with an application.
FIG. 1 illustrates a standard virtual machine architecture, e.g., for use in a virtual machine hosting system 100. The virtual machine hosting system 100 includes a host computer system as a platform for hosting one or more virtual machines. The host computer system typically includes computer hardware 102, an operating system 104, and virtual machine hosting software 106. The architecture of a typical computer system which is suitable for use as a virtual machine hosting system 100 is further described below with reference to FIG. 9.
The virtual machine hosting software 106 may be configured to generate and host one or more virtual machines. A virtual machine may be referred to as a “guest” of the host computer system. In the example configuration shown in FIG. 1, virtual machines 108A-108N are hosted by the virtual machine hosting software 106. Other combinations and numbers of virtual machines are possible in other configurations. The virtual machine hosting software 106 may schedule virtual machines for execution on the underlying hardware 102 and handle traps from the virtual machines (e.g., virtual hardware accesses, instruction execution exceptions, etc.). The virtual machine hosting software 106 may also be referred to herein as a virtual machine (VM) kernel.
Various types of virtual machine hosting software 106 may be used in various configurations. In one configuration, the virtual machine hosting software 106 may comprise the Microsoft Virtual Server product available from Microsoft Corp. (Redmond, Wash.). In one configuration, the virtual machine hosting software 106 may comprise the GSX product available from VMWare, Inc. (Palo Alto, Calif.), now owned by EMC Corporation. In another configuration, the virtual machine hosting software 106 may comprise the Virtual PC product available from Connectix Corporation (San Mateo, Calif.), now owned by Microsoft Corp. In yet another configuration, the virtual machine hosting software 106 may comprise a Java Virtual Machine (JVM) product available from Sun Microsystems, Inc. (Santa Clara, Calif.). In other configurations, the virtual machine hosting software 106 may include virtual machine technologies for the Linux platform such as user mode Linux (UML) virtual machines or plex86. It is noted that the virtual machine hosting software 106 may also be referred to as a virtual machine monitor (VMM) such as the VMMs used on mainframe computer systems such as those available from International Business Machines Corporation (Armonk, N.Y.). In the illustrated configuration, the virtual machine hosting software 106 may execute on the client operating system 104. In other configurations, the virtual machine hosting software 106 may execute directly on the underlying hardware (i.e., without an underlying operating system). For example, the ESX product available from VMWare, Inc. may be used in this manner.
The various virtual machines 108A-108N may emulate various types and configurations of computer hardware. Accordingly, each of the virtual machines 108A-108N may comprise a virtual CPU which is configured to execute a particular instruction set. Each of the virtual machines 108A-108N may further be configured to emulate a hardware environment with a particular set of device drivers, I/O resources, memory and storage resources, network resources, etc. These virtual resources may be mapped to actual resources in the supporting operating system 104 and/or underlying computer hardware 102. In some configurations, the virtual hardware emulated by a particular virtual machine may be similar to the underlying computer hardware 102. In other configurations, the virtual hardware in a particular virtual machine may emulate a different platform.
Each virtual machine 108A-108N may be configured to execute a respective package of virtual machine operating system (OS) and application software 110A-110N which is configured for execution on its respective virtual hardware. Each virtual machine 108A-108N mimics a hardware platform or environment used during execution of a given operating system or application. The software 110A-110N may also be executable on a “real-world” platform, and the virtual nature of the execution environment of the virtual machine 108A-108N may be transparent to the software 110A-110N. In various configurations, different virtual machines which execute on the same virtual machine hosting system 100 may include different operating systems. Different virtual machines may employ different versions of the same OS (e.g. Microsoft Windows NT with different service packs installed), different versions of the same OS family (e.g. Microsoft Windows NT and Microsoft Windows2000), or different OSs (e.g. Microsoft Windows NT, Linux, Sun Solaris, etc.).
The virtual machine in which an application is executing may encompass the entire system state associated with an application. Generally, when a virtual machine is active (i.e., when the application within the virtual machine is executing), the virtual machine may be stored in the memory of the computer system 100 on which the virtual machine is executing and in the files on the non-virtual storage device which are mapped to the virtual storage devices in the virtual machine. In some configurations, the virtual machine hosting software 106 may support a paging system in which various pages of the memory storing the virtual machine may be paged out to local storage in the computer system 100. The virtual machine hosting software 106 may support a command to suspend the virtual machine. In response to the command, the virtual machine hosting software 106 may write an image of the virtual machine to a non-virtual storage device, thus capturing the current state of the executing application. The image may include one or more files written in response to the suspend command, thereby capturing the state of the virtual machine that was in memory in the computer system, as well as the files stored on the non-virtual storage device that represent the virtual disks included in the virtual machine. The state may include not only files written by the application, but uncommitted changes to files which may still be in the memory within the virtual machine, the state of the hardware (including the virtual CPU and virtual memory) within the virtual machine, etc.
Each virtual machine 108A-108N may comprise virtual storage resources, i.e., storage resources which appear to be “real” from within the execution environment of a respective virtual machine. The integrity and security of the data stored on these virtual storage resources may be just as vital as that of data on non-virtual storage. However, current techniques for managing storage associated with virtual machines are inefficient and therefore costly. For example, backup and restore operations for virtual storage may require a system administrator to interact independently and repetitively with agent software or other data management software on each individual virtual machine.
FIG. 2 illustrates a virtual machine hosting system 100 employing agent software on a plurality of virtual machines. The host computer system 103 may include the computer hardware 102, operating system 104, and virtual machine hosting software 106 shown in FIG. 1. As is discussed above with reference to FIG. 1, the host computer system 103 may host a plurality of virtual machines 108A-108N. For their virtual storage resources, each of the virtual machines may comprise a respective virtual volume 113A-113N. Each of the virtual machines may run a respective instance of agent software 111A-111N. Each instance of the agent software 111A-111N may be configured to interact with the virtual volumes of the respective virtual machine 108A-108N as well as a storage management system on the host computer system 103 for backup of virtual storage on backup volume 112. For example, the storage management system may comprise the VERITAS Backup Exec product available from VERITAS Software Corporation (Mountain View, Calif.). The backup volume may comprise any storage device supported by the storage management system. Each agent may act as an intermediary between the respective virtual machine and the backup volume 112. In order to perform backup operations, restore operations, and other data management tasks on the virtual storage, each virtual machine must be managed through its agent as if it were an independent computer system. It is desirable to provide improved systems and methods for managing storage associated with virtual machines.